from serial_operate import modify_time_forzen
from tools import get_all_meter_addr, get_pc_time, get_latest_collect, assert_data, modify_centos_current_date_restart, \
    make_collect_err_data

ip = '192.168.253.113'
com_name = 'com4'

# 1、插入昨天的采集数据,计算数据
print("开始第一步骤")
modify_centos_current_date_restart(ip)
make_collect_err_data(ip, -1, 1, 0, 1)

# 2、修改站端时间并请求召测
_, pc_datetime = get_pc_time()
list_meter_addr = get_all_meter_addr(ip)
modify_stand_time = pc_datetime.replace(hour=1, minute=13, second=0)
_, collect_time, frequency, amplitude, phase, _, _, _ = modify_time_forzen(ip, com_name, modify_stand_time)

# 3、获取最新的采集数据
sql_frequency, sql_amplitude, sql_phase = get_latest_collect(ip, list_meter_addr[0])

# 【步骤1检查点】 采集数据为数据库中最后一条采集数据，时间为当天0点0分
assert_data(4, frequency / 10000, sql_frequency)
assert_data(4, amplitude / 10000, sql_amplitude)
assert_data(2, phase / 100, sql_phase)
assert collect_time == modify_stand_time.replace(hour=0, minute=0).strftime("%Y-%m-%d %H:%M:%S")

# 步骤二：
# 1、修改站端时间并请求召测
print("开始第二步骤")
modify_stand_time = pc_datetime.replace(hour=2, minute=13, second=0)
_, collect_time, frequency, amplitude, phase, _, _, _ = modify_time_forzen(ip, com_name, modify_stand_time)

# 【步骤2检查点】 采集数据为数据库中最后一条采集数据，时间为当天0点0分
assert_data(4, frequency / 10000, sql_frequency)
assert_data(4, amplitude / 10000, sql_amplitude)
assert_data(2, phase / 100, sql_phase)
assert collect_time == modify_stand_time.replace(hour=0, minute=0).strftime("%Y-%m-%d %H:%M:%S")

# 步骤三：
# 1、修改站端时间并请求召测
print("开始第三步骤")
modify_stand_time = pc_datetime.replace(hour=3, minute=13, second=0)
_, collect_time, frequency, amplitude, phase, _, _, _ = modify_time_forzen(ip, com_name, modify_stand_time)

# 【步骤3检查点】 采集数据为数据库中最后一条采集数据，时间为当天0点0分
assert_data(4, frequency / 10000, sql_frequency)
assert_data(4, amplitude / 10000, sql_amplitude)
assert_data(2, phase / 100, sql_phase)
assert collect_time == modify_stand_time.replace(hour=0, minute=0).strftime("%Y-%m-%d %H:%M:%S")

# 步骤四：
# 1、修改站端时间并请求召测
print("开始第四步骤")
modify_stand_time = pc_datetime.replace(hour=4, minute=13, second=0)
_, collect_time, frequency, amplitude, phase, _, _, _ = modify_time_forzen(ip, com_name, modify_stand_time)

# 【步骤4检查点】 采集数据为0，时间为当天3点0分
assert frequency == 0
assert amplitude == 0
assert phase == 0
assert collect_time == modify_stand_time.replace(hour=3, minute=0).strftime("%Y-%m-%d %H:%M:%S")
